import { injectable } from "inversify";
import { CancellationToken, DebugConfiguration, WorkspaceFolder } from "vscode";
import { IDocumentManager, IWorkspaceService } from "../../../../common/application/types";
import { IPlatformService } from "../../../../common/platform/types";
import { IConfigurationService } from "../../../../common/types";
import { IInterpreterService } from "../../../../interpreter/contracts";
import { EQPathSource } from "../../types";
import { IDebugConfigurationResolver } from "../types";

@injectable()
export abstract class BaseConfigurationResolver<T extends DebugConfiguration>
    implements IDebugConfigurationResolver<T> {
    protected pythonPathSource: EQPathSource = EQPathSource.launchJson;

    constructor(
        protected readonly workspaceService: IWorkspaceService,
        protected readonly documentManager: IDocumentManager,
        protected readonly platformService: IPlatformService,
        protected readonly configurationService: IConfigurationService,
        protected readonly interpreterService: IInterpreterService,
    ) { }
    resolveDebugConfiguration(folder: WorkspaceFolder | undefined, debugConfiguration: T, token?: CancellationToken): Promise<T | undefined> {
        throw new Error("131Method not implemented.");
    }
    resolveDebugConfigurationWithSubstitutedVariables(folder: WorkspaceFolder | undefined, debugConfiguration: T, token?: CancellationToken): Promise<T | undefined> {
        throw new Error("132Method not implemented.");
    }
}